//gulp的配置文件，在这里 定义 gulp 要处理的事情
let gulp = require('gulp');
// https://www.npmjs.com/package/gulp-sass
var sass = require('gulp-sass')(require('sass'));
// 定义一个任务来处理 一件事情（sass）  gulp.task(任务名，回调函数（任务要执行代码）)
// 执行任务  终端中输入 gulp scss
gulp.task('scss', function (cb) {
    // 任务要做的事情
    console.log('scss 任务要做的事情');
    // 获取src/scss 所有的 后缀为scss文件， 编译sass- 存到dist/css文件  存到src/css文件
    gulp.src('./src/scss/*.scss')//获取 文件夹下面所有的 后缀为scss文件
        // .pipe(调用sass插件)
        .pipe(sass().on('error', sass.logError))
        .pipe(gulp.dest('./dist/css'))//存到dist/css文件
        .pipe(gulp.dest('./src/css'))//存到src/css文件
    cb()//任务处理完毕调用cb
})

gulp.task('w-scss', function () {
    // 监听文件的变化，一旦变化就会执行 ，后面数组中任务 【任务名】
    // gulp.watch('./src/scss/*.scss', gulp.parallel(['scss']));
    gulp.watch('./src/scss/*.scss', ['scss']);
})


// scss
// js-- 压缩   转译（es6 es7 -- babel--高版本js转为低版本的js）

var uglify = require("gulp-uglify");
gulp.task("js", function (cb) {
    console.log("js任务代码");
    gulp.src("./src/js/*.js").pipe(uglify()).pipe(gulp.dest("./dist/js"));
    cb()
});

// 转译js 
const babel = require('gulp-babel')
gulp.task('babeljs', function (cb) {
    gulp.src('./src/js/*.js')
        .pipe(babel(
            {
                presets: ['@babel/env']
            }
        ))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
    cb()

})

// 合并 list login tab -->index.js 
// 合并js
var concat = require('gulp-concat');
gulp.task('indexjs', function (cb) {
    // 获取要合并的js文件
    gulp.src('./src/js/index/*.js')
        // 合并
        .pipe(concat('index.js'))
        // 输出
        .pipe(gulp.dest('./src/js'))
        .pipe(babel(
            {
                presets: ['@babel/env']
            }
        ))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
    cb()
})
//gulp-htmlmin  压缩html
var htmlmin = require('gulp-htmlmin');
gulp.task('htmlmin', function (cb) {
    gulp.src('src/**/*.html')
        //    压缩html代码 去掉了 空格和换行
        .pipe(htmlmin({ collapseWhitespace: true }))
        .pipe(gulp.dest('dist'));
    cb()
})

var connect = require("gulp-connect");

// 刷新任务
gulp.task("reload", function (cb) {
    gulp.src("./src/**/*.html").pipe(connect.reload());
    cb()
})
gulp.task('server', function (cb) {
    connect.server({
        livereload: true,
    });
    // gulp.watch('./src/**/*.css', gulp.parallel(['reload']))
    gulp.watch('./src/js/*.js', gulp.parallel(['reload']))
    gulp.watch('./src/js/index/*.js', gulp.parallel(['indexjs', 'reload']))
    gulp.watch('./src/**/*.html', gulp.parallel(['reload']))

    gulp.watch('./src/scss/**/*.scss', gulp.parallel(['scss', 'reload']));

    cb()
})

gulp.task('build', gulp.series(['babeljs', 'scss', 'htmlmin']), function () {

    console.log('项目的构件压缩完毕！');

})